@highlight-ui/utils-hooks
Installation
yarn add @highlight-ui/utils-hooks
Hooks
useAutoPositioner
A wrapper for the usePopper from
the react-popper library.
Usage
Accepts a Popper.js options
object as an argument and returns the styles
and
attributes
values from the usePopper
hook. For convenience, the hook also
returns setReferenceElement
and setPopperElement
functions.
import { useAutoPositioner } from '@highlight-ui/utils-hooks';
const MyComponent = () => {
const {
setReferenceElement,
setPopperElement,
styles,
attributes,
} = useAutoPositioner();
return (
<div ref={setReferenceElement}>
<div ref={setPopperElement} style={...styles.popper} {...attributes.popper}>
</div>
</div>
)
};
useForkRef
Allows multiple ref objects/callbacks to be combined so that they can be passed
as a single callback ref.
Usage
import React from 'react';
import { useForkRef } from '@highlight-ui/utils-hooks';
const MyComponent = () => {
const firstRef = React.useRef();
const secondRef = React.useRef();
const finalRef = React.useRef([firstRef, secondRef]);
return <div ref={finalRef}></div>;
};
useClickOutside
Allows attaching a click-outside listener to a target element.
Usage
import { useClickOutside } from '@highlight-ui/utils-hooks';
const MyComponent = () => {
const onClickOutside = () => {
console.log('clicked outside');
};
const setElement = useClickOutside(onClickOutside);
return (
<div>
<span>Outer Div</span>
<div ref={setElement}>
<span>Inner Div</span>
</div>
</div>
);
};
useScrollObserver
Allows attaching a scroll listener to a target element.
Usage
import { useScrollObserver } from '@highlight-ui/utils-hooks';
const MyComponent = () => {
const onScroll = () => {
console.log('scrolled');
};
const { setElement } = useScrollObserver(onScroll);
return (
<div>
<span>Outer Div</span>
<div ref={setElement}>
<span>Inner Div</span>
</div>
</div>
);
};